腾讯云 RTC SDK |
您所在的位置:网站首页 › audio mute › 腾讯云 RTC SDK |
功能说明
本文主要介绍如何在通话过程中动态地开关摄像头及麦克风。 实现方案 方案一:使用 mute/unmute 方法在通话过程中使用 muteAudio()、unmuteAudio()、muteVideo()、unmuteVideo() 方法开关摄像头及麦克风。 代码示例: // 关闭音频,远端会收到 'mute-audio' 事件 localStream.muteAudio(); // 打开音频,远端会收到 'unmute-audio' 事件 localStream.unmuteAudio(); // 关闭视频,远端会收到 'mute-video' 事件 localStream.muteVideo(); // 打开视频,远端会收到 'unmute-video' 事件 localStream.unmuteVideo(); 优点:耗时短,兼容性强。 缺点:使用 muteVideo/muteAudio 不会停止设备采集,此时摄像头、麦克风的灯任然是亮着的。 方案二:使用 addTrack/removeTrack 方法通话过程中使用 addTrack() 和 removeTrack() 开关摄像头。 代码示例: // 关闭摄像头 const videoTrack = localStream.getVideoTrack(); if (videoTrack) { await localStream.removeTrack(videoTrack) // 停止采集,关闭摄像头 videoTrack.stop(); } // 打开摄像头 const videoStream = TRTC.createStream({ userId, audio: false, video: true }); await videoStream.initialize(); await localStream.addTrack(videoStream.getVideoTrack()); // 关闭麦克风 const audioTrack = localStream.getAudioTrack(); if (audioTrack) { await localStream.removeTrack(audioTrack); audioTrack.stop(); } // 打开麦克风 const audioStream = TRTC.createStream({ audio: true, video:false }); await audioStream.initialize(); await localStream.addTrack(audioStream.getAudioTrack()); 优点:关闭摄像头、麦克风时,会停止采集,摄像头及麦克风灯不会继续亮着。 缺点:开关麦克风方案的兼容性稍差于方案一,可参考:replaceTrack() 中关于兼容性的描述。注意: v4.15.0 之前的版本, removeTrack() 不支持 remove audio track,需使用下述方式实现开关麦克风。通话过程中使用 replaceTrack() 开关麦克风。 代码示例: // 关闭麦克风 localStream.muteAudio(); const audioTrack = localStream.getAudioTrack(); if (audioTrack) { audioTrack.stop(); } // 打开麦克风,重新采集麦克风并替换 audio track const stream = TRTC.createStream({ audio: true, video:false }); await stream.initialize(); localStream.unmuteAudio(); await localStream.replaceTrack(stream.getAudioTrack()); |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |